{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-05-12T02:56:03.828537Z",
     "start_time": "2025-05-12T02:56:03.824318Z"
    }
   },
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "import numpy as np"
   ],
   "outputs": [],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-12T02:59:09.607086Z",
     "start_time": "2025-05-12T02:59:09.602744Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义数据\n",
    "X = np.array([[2, 1], [3, 1], [1, 4], [2, 6]])\n",
    "y = np.array([0, 0, 0, 1])  # 二分类\n",
    "\n",
    "# 定义模型\n",
    "knn = KNeighborsClassifier(n_neighbors=2, weights='distance')"
   ],
   "id": "8e3f3e2e57a3d0a8",
   "outputs": [],
   "execution_count": 19
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-12T02:59:10.266161Z",
     "start_time": "2025-05-12T02:59:10.260829Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 训练模型\n",
    "knn.fit(X, y)"
   ],
   "id": "211e6284fabd875f",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=2, weights='distance')"
      ],
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier(n_neighbors=2, weights=&#x27;distance&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>KNeighborsClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.neighbors.KNeighborsClassifier.html\">?<span>Documentation for KNeighborsClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>KNeighborsClassifier(n_neighbors=2, weights=&#x27;distance&#x27;)</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-12T02:59:10.911569Z",
     "start_time": "2025-05-12T02:59:10.904619Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 对新数据进行预测\n",
    "print(knn.predict([[4, 9]]))"
   ],
   "id": "9709634fab9f994b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1]\n"
     ]
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-12T02:37:19.608864Z",
     "start_time": "2025-05-12T02:37:19.604500Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# 画图\n",
    "X1 = X[y==0]\n",
    "X2 = X[y==1]"
   ],
   "id": "174ca39ba7609e2a",
   "outputs": [],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-05-12T02:50:47.624120Z",
     "start_time": "2025-05-12T02:50:47.519213Z"
    }
   },
   "cell_type": "code",
   "source": [
    "plt.scatter(X1[:, 0], X1[:, 1])\n",
    "plt.scatter(X2[:, 0], X2[:, 1])\n",
    "plt.scatter(4, 9)\n",
    "\n",
    "plt.show()"
   ],
   "id": "f0b278723415526d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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SatXr9batWub/Pq+ffs0bdo0XXfddXrrrbeUkpKie+65x+izO06bGyV27tzpTpw40Z0wYYKblpbmbtiw4ZTnvfnmm252drZbU1Pjuq7r1tTUuOPGjXPffvvtcI4bUaZZVVVVuRdffLFbUlIS5gnPDMXFxW5aWppbXl5ef6ygoMAdNWpUo3Pb+r7yklVb31eu67plZWXub3/7W/f777+vPzZt2jR37ty5jc5t63vLS1bsLdf97rvv3J/85CfupEmT3BkzZpzynCVLlri33npr/eMjR464GRkZTf5bYFPUXKnYtGmTRowYoddff73Z87Zv366hQ4fWf75IXFychgwZosLCwjBMeWYwzaqkpERxcXE677zzwjTZmSU1NVUrVqzQ2Wef3eD44cOHG53b1veVl6za+r6SpG7dumnJkiVKSkqS67rasmWLNm/erMzMzEbntvW95SUr9pa0cOFCXXPNNerXr1+T52zfvl3Dhg2rf9yhQwcNGDAgLHsqbB99frpuueUWo/PKy8sbhd21a9cWXwaIJaZZlZSUKCkpSQ899JA2bdqkHj166De/+Y0uu+wynyc8MyQnJysrK6v+cU1NjV5++WWNHDmy0bltfV95yaqt76v/lZ2drX379mnMmDG64oorGn29re+tk7WUVVvfW+vXr9cnn3yigoICzZs3r8nzysvL1a1btwbHunbtqgMHDvg8YZTdU2Hi6NGjjT6atV27dqquro7QRGeukpISHTt2TKNGjdKKFSt02WWXaerUqW32I+rz8/O1Y8cO3X///Y2+xr5qqLms2FcN/elPf9Ly5cv1+eefa8GCBY2+zt76r5ayast7q6qqSnPnztWcOXOUmJjY7LmR3FNRc6XCVPv27RsFV11d3eIfQlt0zz33aPLkyerUqZMk6aKLLtJnn32mN954Q8FgMMLThVd+fr5eeOEFLV68WGlpaY2+zr76r5ayYl81VPd7rqqq0vTp0/XQQw81+AufvfVfLWXVlvfW0qVLNXDgwAZXDJvS1J5KTk72a7x6MXelonv37qqoqGhwrKKiotGlIEjx8fH1/+es07dvX5WVlUVoosjIy8vTc889p/z8/FNecpXYV3VMsmJf1e6NNWvWNDjWr18/HT9+vNF9KG19b3nJqi3vrdWrV2vNmjXKyMhQRkaGCgoKVFBQoIyMjEbnNrWnUlNTfZ8z5krF4MGDtW3btvofnXFdV1u3btXgwYMjPNmZZ+bMmZo1a1aDY1988YX69u0boYnCb+nSpXrttde0aNEiXXXVVU2ex74yz4p9Je3du1f33ntvg3/sioqKlJKSopSUlAbntvW95SWrtry3XnrpJRUUFGjVqlVatWqVsrOzlZ2drVWrVjU6d/DgwdqyZUv946NHj2rHjh1h2VMxUSrKy8t17NgxSdL48eN16NAhPfrooyouLtajjz6qo0eP6sorr4zwlGeGk7PKzs6u36SlpaVaunSptmzZoltvvTXCU4bHrl279NRTT+nXv/61hg4dqvLy8vpfEvvqZF6yauv7Sqq9jD9gwAA9/PDDKi4u1tq1a5Wfn6+7775bEnvrZF6yast7q1evXurdu3f9r44dO6pjx47q3bu3HMdReXl5/UsekyZN0tatW/XMM89o586dmjVrls4991yNGDHC/0F9/6FVH/zvey+kpaU1+Jnu7du3uz//+c/dYDDoXn/99e5nn30WiTHPCC1l9cYbb7iXX365O3DgQPfaa691N23aFIkxI+Lpp59209LSTvnLddlXJ/OaVVveV3UOHDjgTps2zR0yZIh76aWXusuWLat/Lwr2VkNesmJv1ZoxY0b9+1Ts2bOn0d/1H330kXv55Ze7gwYNcm+//Xb366+/Dstcca4bjrfYAgAAsS4mXv4AAACRR6kAAABWUCoAAIAVlAoAAGAFpQIAAFhBqQAAAFZQKgAAgBWUCgAAYAWlAgAAWEGpAAAAVlAqAACAFZQKAABgxf8D/5o8Xe8Y9k4AAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "3f04bb7a714cdbba"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
